// 正向运动和反向运动的封装



// 将来定时器结束的时候，要做一件事情
// 这件事情不确定 --- 参数
// 函数就是完成一个完整功能 --- 做一件事情

// function move(oDiv, speed, end, prop, cb) {

//     var start = parseInt(getComputedStyle(oDiv)[prop]);
//     // console.log(_left);

//     // 判断参数就可以知道是正向运动还是反向运动
//     if (end < start) {   // 终点大于起点   正向运动
//         speed = -speed;
//     }

//     var t = setInterval(function () {
//         start += speed;
//         oDiv.style[prop] = start + 'px';
//         // 快到终点或者到达终点的时候 就停下来   --- 剩下的距离小于speed
//         if (Math.abs(end - start) < Math.abs(speed)) {
//             // 如果没有到达终点，就强行到达终点
//             oDiv.style[prop] = end + 'px';
//             clearInterval(t);

//             // 定时器结束了,如果传了函数就调用，没有传就不调用
//             // if (cb) cb();

//             cb && cb();
//         }
//     }, 10)
// }



function move(oDiv, speed, end, prop, cb) {

    cb = cb || function () { };    // 默认是空函数

    var start = parseInt(getComputedStyle(oDiv)[prop]);
    // console.log(_left);

    // 判断参数就可以知道是正向运动还是反向运动
    if (end < start) {   // 终点大于起点   正向运动
        speed = -speed;
    }

    var t = setInterval(function () {
        start += speed;
        oDiv.style[prop] = start + 'px';
        // 快到终点或者到达终点的时候 就停下来   --- 剩下的距离小于speed
        if (Math.abs(end - start) < Math.abs(speed)) {
            // 如果没有到达终点，就强行到达终点
            oDiv.style[prop] = end + 'px';
            clearInterval(t);

            cb()
        }
    }, 10)
}